home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 2000-04-22 | 7.2 KB | 133 lines |
- Screen Open 0,640,256,2,$8000
- 'VOLOFF=1024 : VOLLEN=16384-VOLOFF
- INST=1
- For INST=43 To 43
- NAME$="test" : ILEN=65534 : VOLOFF=60000
- ILEN=10000
-
- If INST=1 Then NAME$="openhihat" : ILEN=8192 : VOLOFF=6000
- If INST=2 Then NAME$="basedrum01" : ILEN=8192 : VOLOFF=7000
- If INST=3 Then NAME$="basedrum01a" : ILEN=8192 : VOLOFF=7000
- If INST=4 Then NAME$="basedrum02" : ILEN=8192 : VOLOFF=7000
- If INST=5 Then NAME$="basedrum02b" : ILEN=8192 : VOLOFF=7000
- If INST=6 Then NAME$="basedrum03" : ILEN=8192 : VOLOFF=7000
- If INST=7 Then NAME$="basedrum03b" : ILEN=8192 : VOLOFF=7000
- If INST=8 Then NAME$="zap00" : ILEN=8192 : VOLOFF=700
- If INST=9 Then NAME$="zap01" : ILEN=8192 : VOLOFF=700
- If INST=10 Then NAME$="zap02" : ILEN=8192 : VOLOFF=700
- If INST=11 Then NAME$="zap03" : ILEN=8192 : VOLOFF=700
- If INST=12 Then NAME$="zap04" : ILEN=4096 : VOLOFF=700
- If INST=13 Then NAME$="hardbass" : ILEN=8192 : VOLOFF=8000
- If INST=14 Then NAME$="sinebass" : ILEN=512 : VOLOFF=513
- If INST=15 Then NAME$="rectbass" : ILEN=512 : VOLOFF=513
- If INST=16 Then NAME$="bass00" : ILEN=512 : VOLOFF=513
- If INST=17 Then NAME$="acid00a" : ILEN=2050 : VOLOFF=4000
- If INST=18 Then NAME$="acid00b" : ILEN=2050 : VOLOFF=4000
- If INST=19 Then NAME$="acid00c" : ILEN=2050 : VOLOFF=4000
- If INST=20 Then NAME$="acid00d" : ILEN=2050 : VOLOFF=4000
- If INST=21 Then NAME$="acid00e" : ILEN=2050 : VOLOFF=4000
- If INST=22 Then NAME$="acid00f" : ILEN=2050 : VOLOFF=4000
- If INST=23 Then NAME$="acid00g" : ILEN=2050 : VOLOFF=4000
- If INST=24 Then NAME$="acid00h" : ILEN=2050 : VOLOFF=4000
- If INST=25 Then NAME$="elecpiano00" : ILEN=8192 : VOLOFF=100
- If INST=26 Then NAME$="elecpiano01" : ILEN=8192 : VOLOFF=100
- If INST=27 Then NAME$="effect00a" : ILEN=65534 : VOLOFF=40000
- If INST=28 Then NAME$="effect00b" : ILEN=65534 : VOLOFF=40000
- If INST=29 Then NAME$="effect01a" : ILEN=65534 : VOLOFF=40000
- If INST=30 Then NAME$="effect01b" : ILEN=65534 : VOLOFF=40000
- If INST=31 Then NAME$="effect02a" : ILEN=65534 : VOLOFF=40000
- If INST=32 Then NAME$="effect02b" : ILEN=65534 : VOLOFF=40000
- If INST=33 Then NAME$="effect03a" : ILEN=65534 : VOLOFF=60000
- If INST=34 Then NAME$="effect03b" : ILEN=65534 : VOLOFF=60000
- If INST=35 Then NAME$="effect03c" : ILEN=65534 : VOLOFF=60000
- If INST=36 Then NAME$="effect03d" : ILEN=65534 : VOLOFF=1000
- If INST=37 Then NAME$="effect03e" : ILEN=65534 : VOLOFF=1000
- If INST=38 Then NAME$="effect04a" : ILEN=65534 : VOLOFF=20000
- If INST=39 Then NAME$="effect04b" : ILEN=65534 : VOLOFF=20000
- If INST=40 Then NAME$="effect04c" : ILEN=65534 : VOLOFF=20000
- If INST=41 Then NAME$="effect04d" : ILEN=65534 : VOLOFF=20000
- If INST=42 Then NAME$="effect04e" : ILEN=65534 : VOLOFF=20000
- If INST=43 Then NAME$="string01" : ILEN=10000 : VOLOFF=70000
- If INST=99 Then NAME$="effect05" : ILEN=65534 : VOLOFF=30000
- VOLLEN=ILEN-VOLOFF
- Gosub MAKEINST
- Wait Key
- Next
- End
- MAKEINST:
- Cls
- Reserve As Chip Work 9,ILEN
- ST=Start(9)
- AD=ST
- OSC=0
- X=0
- V=0
- For A=0 To ILEN-1
- ' V=Qsin(OSC,64)+Qsin(OSC*16,Max(256-(A/32),0))+Qsin(OSC*16+Qrnd(256),32)
- ' V=Qsin(OSC*16+Qsin(OSC*4,64),256)
-
- If INST=1 Then V= Extension_8_1106( Extension_8_1106(OSC,1024),32) : Add OSC,257+ Extension_8_11B8(8)
- If INST=2 Then V= Extension_8_1106(OSC,256) : Add OSC,1+((ILEN-OSC)/1024)
- If INST=3 Then V= Extension_8_1106(OSC,256) : Add OSC,1+((ILEN-OSC+A)/1024)
- If INST=4 Then V= Extension_8_1106(OSC,256) : Add OSC,4+((ILEN-OSC)/1024)
- If INST=5 Then V= Extension_8_1106(OSC,256) : Add OSC,4+((ILEN-OSC+A)/1024)
- If INST=6 Then V= Extension_8_1106(OSC,256) : Add OSC,8+((ILEN-OSC)/1024)
- If INST=7 Then V= Extension_8_1106(OSC,256) : Add OSC,8+((ILEN-OSC+A)/1024)
- If INST=8 Then V= Extension_8_1106(OSC,256) : Add OSC,2+(ILEN/(A*4+4))
- If INST=9 Then V= Extension_8_1106(OSC,256) : Add OSC,2+(ILEN/(A*2+4))
- If INST=10 Then V= Extension_8_1106(OSC,256) : Add OSC,2+(ILEN/(A+4))
- If INST=11 Then V= Extension_8_1106(OSC,256) : Add OSC,2+(ILEN/((A/2)+4))
- If INST=12 Then V= Extension_8_1106(OSC,256) : Add OSC,(ILEN/((A/4)+4))
- If INST=13 Then V= Extension_8_1106(OSC,256) : Add OSC,4+(ILEN/(A*4+4))
- If INST=14 Then V= Extension_8_1106(OSC,128) : Add OSC,4
- If INST=15 Then V= Extension_8_1106(OSC,512) : Add OSC,4
- If INST=16 Then V= Extension_8_1106(OSC,64)+ Extension_8_1106(OSC*2+64,64) : Add OSC,2
- If INST=17 Then V= Extension_8_1106(OSC+V,128) : Add OSC,4
- If INST=18 Then V= Extension_8_1106(OSC+V,128+16) : Add OSC,4
- If INST=19 Then V= Extension_8_1106(OSC+V,128+32) : Add OSC,4
- If INST=20 Then V= Extension_8_1106(OSC+V,128+40) : Add OSC,4
- If INST=21 Then V= Extension_8_1106(OSC+V,128+48) : Add OSC,4
- If INST=22 Then V= Extension_8_1106(OSC+V,128+56) : Add OSC,4
- If INST=23 Then V= Extension_8_1106(OSC+V,128+64) : Add OSC,4
- If INST=24 Then V= Extension_8_1106(OSC+V,128+72) : Add OSC,4
- If INST=25 Then V= Extension_8_1106(OSC,128) : Add OSC,16+ Extension_8_1106(V,12)
- If INST=26 Then V= Extension_8_1106(OSC,128) : Add OSC,16+ Extension_8_1106(V*32,12)
- If INST=27 Then V= Extension_8_1106( Extension_8_1106(OSC,A),128) : Inc OSC
- If INST=28 Then V= Extension_8_1106( Extension_8_1106(OSC,A),128) : Add OSC,2
- If INST=29 Then V= Extension_8_1106(Abs( Extension_8_1106(OSC,A)),128) : Inc OSC
- If INST=30 Then V= Extension_8_1106(Abs( Extension_8_1106(OSC,A)),128) : Add OSC,2
- If INST=31 Then V= Extension_8_1106( Extension_8_1106(OSC,A)+V*2,128) : Inc OSC
- If INST=32 Then V= Extension_8_1106( Extension_8_1106(OSC,A)+V*2,128) : Add OSC,2
- If INST=33 Then V= Extension_8_1106(OSC+ Extension_8_1106(V*2,V),(A/256)+128) : Add OSC,4
- If INST=34 Then V= Extension_8_1106(OSC+ Extension_8_1106(V*4,V),(A/512)+128) : Add OSC,4
- If INST=35 Then V= Extension_8_1106(OSC+ Extension_8_1106(V*8,V),(A/1024)+128) : Add OSC,4
- If INST=36 Then V= Extension_8_1106(OSC+ Extension_8_1106(V*16,V),(A/2048)+128) : Add OSC,4
- If INST=37 Then V= Extension_8_1106(OSC+ Extension_8_1106(V*32,V),(A/4096)+128) : Add OSC,4
- If INST=38 Then V= Extension_8_1106(OSC-A,128)+ Extension_8_1106(A/4,A/256) : Add OSC, Extension_8_1106(A,Abs(V)+1)
- If INST=39 Then V= Extension_8_1106(OSC-A,128)+ Extension_8_1106(A/4,A/256) : Add OSC, Extension_8_1106(A,Abs(V)+2)
- If INST=40 Then V= Extension_8_1106(OSC-A,128)+ Extension_8_1106(A/4,A/256) : Add OSC, Extension_8_1106(A,Abs(V)+4)
- If INST=41 Then V= Extension_8_1106(OSC-A,128)+ Extension_8_1106(A/4,A/256) : Add OSC, Extension_8_1106(A,Abs(V)+8)
- If INST=42 Then V= Extension_8_1106(OSC-A,128)+ Extension_8_1106(A/4,A/256) : Add OSC, Extension_8_1106(A,Abs(V)+16)
- If INST=43 Then V= Extension_8_1106(OSC,64)+ Extension_8_1106(OSC*4+128,32)+ Extension_8_1106(OSC*4+256,16)+ Extension_8_1106( Extension_8_1106(OSC,1024),32) : Add OSC,2
- If INST=0 Then V= Extension_8_1106(OSC,80)+ Extension_8_1106(OSC+ Extension_8_1106(A,A/128),64) : Add OSC,4+ Extension_8_1106(V,3)
-
- If A=>VOLOFF
- V=(V*(VOLLEN-(A-VOLOFF)))/VOLLEN
- End If
- Poke AD,Min(Max(V,-128),127)
- Gosub DR
- Inc AD
- Next
- Extension_8_0472 "Audio:Sound/Synth/"+NAME$,9
- Extension_8_1412 1,ST,ILEN,28000
- Return
- DR:
- Y=(X/2560)*32+16
- If((X/4) mod 640)=0
- Draw 0,Y To 640,Y
- Plot 0,Y
- End If
- Draw To((X/4) mod 640),Y+ Extension_8_0BF0(AD)/8
- Inc X
- If X>20480 Then Cls : X=0
- Return